A make tool, also known as a build tool, generally refers to a software utility that is designed to construct executable code from relevant source code files, and associated dependencies therebetween. In other words, a make tool is designed to control a build process of a software application, including, e.g., collecting various source files, determining dependencies between the source files, triggering processing of the source files, and assembling intermediate or final target files, so as to provide executable code for the desired software application.
Given that many software applications, such as database-related applications, or business applications are extremely large and/or extremely complex, execution of a make tool in constructing executable code from available source files may be a time-consuming and resource-consuming process. Moreover, it is frequently necessary or desirable to modify an existing software application, such as when upgrading, maintaining, or repairing an existing software application.
When changing existing source files for an existing software application, however, it would be impractical or otherwise undesirable to reprocess all of the existing source files in a subsequent make process, particularly when only a relatively small number of the source files have been changed. Consequently, many existing make tools include functionality for tracking changes made to source files. The intended result of such functionality is that, during a subsequent reprocessing of the source files by the make tool, only the changed source files (and associated dependencies and intermediate target files) will be reprocessed in order to regenerate executable code for the updated software application.
However, such change tracking for source files is not always sufficiently accurate or reliable. In some scenarios, for example, it may occur that some source files which have not actually been altered since a previous make operation are incorrectly included for reprocessing during a current make operation. In these and other scenarios, the resulting make operations may become unnecessarily burdensome and frustrating, and may consume time and other resources in an inefficient and undesirable manner.